home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu083.dms / pu083.adf / Propagation / minimuf 3.5 (.txt) < prev    next >
AmigaBASIC Source Code  |  1989-03-19  |  19KB  |  719 lines

  1.  
  2.  
  3. REM WA1FSV VERSION DATED 10 APRIL 1986
  4. REM CALCULATIONS TAKE APPROX 12.5 SECONDS
  5. REM FOR EACH TRANSMITTER
  6.  
  7. LOCATE  8,29: PRINT "WELCOME TO MINIMUF 3.5"
  8. LOCATE 12,23: PRINT "WOULD YOU LIKE TO SEE INSTRUCTIONS"
  9. LOCATE 16,28: INPUT "PLEASE TYPE ( Y OR N ) ",CHOICE$
  10. IF CHOICE$="YES" OR CHOICE$="yes" OR CHOICE$="Y" OR CHOICE$="y" THEN GOTO INSTRUCTIONS
  11.  
  12.       Driver:
  13.  
  14. CLS
  15. CLEAR
  16. PI=4*ATN(1)
  17. DEF FNACS(X)= -ATN(X/SQR(-X*X+1))+(PI/2)
  18. R0=PI/180: P1=2*PI: R1=180/PI: P0=PI/2
  19. S$=" ":REM SPACE
  20. C$=",":REM COMMA
  21. DIM SF(22),SN(22),A$(4),M(12),LT(41),LN(41),NT$(41)
  22. DIM LO$(41),CI$(41),M$(12),NO(11)
  23.  
  24. REM DATA BELOW IS FROM GRAPH OF SOLAR FLUX vs SUNSPOT
  25. REM NUMBER IN QST DECEMBER, 1982, P. 37
  26.  
  27. DATA 64,72,79,87,95,103,111,120,128,137,146,155,165,174,184,194,204,214,224,234,244,444
  28. DATA 0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,400
  29.     FOR I=1 TO 22
  30.       READ SF(I): NEXT I
  31.     FOR I=1 TO 22
  32.       READ SN(I): NEXT I
  33. DATA JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC
  34. DATA 31,28,31,30,31,30,31,31,30,31,30,31
  35.     FOR I=1 TO 12
  36.       READ M$(I): NEXT I
  37.     FOR I=1 TO 12
  38.       READ M(I): NEXT I
  39.  
  40. REM THESE ARE THE "TRANSMITTER" DATA STATEMENTS
  41.  
  42. DATA ADDIS ABABA,ETHIOPIA,EASTERN AFRICA,9.0,-38.5
  43. DATA ANCHORAGE,ALASKA,N.AMERICA,61.5,150.0
  44. DATA ANKARA,TURKEY,ASIA,39.9,-32.9
  45. DATA ATHENS,GREECE,MEDITERRANEAN,38.0,-23.7
  46. DATA BOMBAY,INDIA,ASIA,19.0,-72.0
  47. DATA CAPETOWN,SOUTH AFRICA,SOUTHERN AFRICA,-33.9,-18.5
  48. DATA CARACAS,VENEZUELA,NORTHERN S.AMERICA,10.5,67.0
  49. DATA COOK ISLAND,-,OCEANA,-20.0,160.0
  50. DATA DAKAR,SENEGAL,WESTERN AFRICA,14.0,17.5
  51. DATA DUBLIN,IRELAND,WESTERN EUROPE,53.3,6.3
  52. DATA GUAM,-,OCEANA,12.0,-145.0
  53. DATA HALIFAX,NOVA SCOTIA,N.AMERICA,44.7,63.6
  54. DATA HELSINKI,FINLAND,NORTHERN EUROPE,60.2,-25.0
  55. DATA HONG KONG,-,ASIA,22.0,-114.0
  56. DATA HONOLULU,HAWAII,OCEANA,21.3,157.9
  57. DATA JERUSALEM,ISRAEL,WESTEREN ASIA,32.0,-35.0
  58. DATA LIBREVILLE,GABON,CENTRAL AFRICA,0.5,9.0
  59. DATA MADRID,SPAIN,SOUTHERN EUROPE,40.4,3.7
  60. DATA MANILA,PHILIPPINES,OCEANA,14.5,-121.0
  61. DATA MELBOURNE,AUSTRALIA,OCEANA,-37.8,-145.0
  62. DATA MILANO,ITALY,SOUTHERN EUROPE,45.5,-13.0
  63. DATA MOSCOW,USSR,EASTERN EUROPE,56.0,-37.0
  64. DATA MUNICH,GERMANY,CENTRAL EUROPE,48.1,11.6
  65. DATA NAPLES,ITALY,MEDITERRANEAN,40.0,11.0
  66. DATA NAIROBI,KENYA,EAST AFRICA,-1.5,-37.5
  67. DATA OSLO,NORWAY,NORTHERN EUROPE,60.0,-11.0
  68. DATA PARIS,FRANCE,WESTERN EUROPE,48.8,-2.3
  69. DATA PEKING,CHINA,ASIA,40.0,-116.0
  70. DATA QUITO,ECUADOR,WESTERN S.AMERICA,-0.5,78.0
  71. DATA RIO DE JANERIO,BRAZIL,EASTERN S.AMERICA,-23.0,43.0
  72. DATA SANTIAGO,CHILE,SOUTHERN S.AMERICA,-33.0,71.0
  73. DATA ST.AUGUSTINE,FLORIDA,N.AMERICA,29.9,81.4
  74. DATA SAN JUAN,PUERTO RICO,CARIBBEAN,18.5,66.5
  75. DATA SAN SALVADOR,EL SALVADOR,CENTRAL AMERICA,13.5,89.0
  76. DATA SINGAPORE,-,ASIA,1.0,-104.0
  77. DATA STOCKHOLM,SWEDEN,NORTHERN EUROPE,59.3,-18.1
  78. DATA TOKYO,JAPAN,ASIA,35.7,-139.8
  79. DATA TRIPOLI,LIBYA,NORTHERN AFRICA,32.5,-13.0
  80. DATA VIENNA,AUSTRIA,CENTRAL EUROPE,48.2,-16.3
  81. DATA WARSAW,POLAND,NORTHERN EUROPE,52.2,-21.0
  82. DATA SUNNYVALE,CALIFORNIA,N.AMERICA,37.7,121.5
  83.  
  84. REM IF THE RECEIVER IS TO BE IN THE EASTERN UNITED STATES IT IS
  85. REM RECOMMENDED THAT THE ST.AUGUSTINE DATA BE REPLACED BY:
  86. REM "SAN FRANCISCO,CALIFORNIA,N.AMERICA,37.5,122.5"
  87.  
  88.     FOR I=1 TO 41
  89.       READ CI$(I),NT$(I),LO$(I),LT(I),LN(I): NEXT I
  90.  
  91.        
  92.          Transgrpselect:
  93.  
  94. CLS: ALLIT=0
  95.  
  96. PRINT
  97. PRINT
  98. PRINT
  99. PRINT TAB(23); "TRANSMITTER GROUP SELECTIONS ARE:"
  100. PRINT
  101. PRINT
  102. PRINT
  103. PRINT
  104. PRINT
  105. PRINT TAB(20); "41  CHOICE OF ANY 1 TO 10 TRANSMITTERS"
  106. PRINT TAB(20); "42  NORTHERN EUROPE & EUROPEAN USSR"
  107. PRINT TAB(20); "43  WESTERN, CENTRAL & SOUTHERN EUROPE"
  108. PRINT TAB(20); "44  MEDITERRANEAN AREAS"
  109. PRINT TAB(20); "45  EAST, WEST & SOUTHERN AFRICA"
  110. PRINT TAB(20); "46  ASIA AND THE FAR EAST"
  111. PRINT TAB(20); "47  OCEANA AND THE SOUTH PACIFIC"
  112. PRINT TAB(20); "48  NORTH, SOUTH AND CENTRAL AMERICAS"
  113. PRINT TAB(20); "49  USER SUPPLIED INFORMATION"
  114. PRINT
  115. PRINT
  116. PRINT
  117. PRINT
  118. PRINT TAB(23);: INPUT; "TYPE YOUR CHOICE ( 41 THRU 49 )  ",CHOICE
  119.  
  120. IF CHOICE <41 OR CHOICE >49 THEN GOTO Transgrpselect
  121. IF CHOICE <>49 THEN ALLIT=1: GOTO 1760
  122.  
  123. REM USER INPUTS TRANSMITTER DATA NEXT
  124. CLS
  125.                      
  126. 1690 
  127.  
  128. PRINT
  129. PRINT TAB(7);:INPUT; "LATITUDE OF TRANSMITTER - SOUTH IS NEGATIVE (-90 TO 90) ",L1
  130. PRINT
  131. IF L1 <-90 OR L1 >90 THEN CLS: PRINT "TRY AGAIN": GOTO 1690
  132. PRINT
  133.  
  134. 1710 
  135.   
  136. PRINT TAB(7);:INPUT; "LONGITUDE OF TANSMITTER - EAST IS NEGATIVE (-360 TO 360) ",W1
  137. PRINT
  138. IF W1 <-360 OR W1 >360 THEN PRINT "TRY AGAIN": GOTO 1710
  139. PRINT
  140. PRINT TAB(7); "TYPE COMMENTS ON THIS TRANSMITTER BELOW"  
  141. PRINT
  142. PRINT TAB(7);:INPUT; "",TCOM$
  143.  
  144.   GOTO Inmuf
  145.  
  146. 1760 
  147.   
  148. IF CHOICE=42 THEN NU=5: NO(1)=13: NO(2)=22: NO(3)=26: NO(4)=36: NO(5)=40:   GOTO Inmuf
  149. IF CHOICE=43 THEN NU=5: NO(1)=10: NO(2)=21: NO(3)=23: NO(4)=27: NO(5)=39:   GOTO Inmuf
  150. IF CHOICE=44 THEN NU=5: NO(1)=4:  NO(2)=16: NO(3)=18: NO(4)=24: NO(5)=38:   GOTO Inmuf
  151. IF CHOICE=45 THEN NU=5: NO(1)=1:  NO(2)=6:  NO(3)=9:  NO(4)=17: NO(5)=25:   GOTO Inmuf
  152. IF CHOICE=46 THEN NU=6: NO(1)=3:  NO(2)=5:  NO(3)=14: NO(4)=28: NO(5)=35:   NO(6)=37: GOTO Inmuf
  153. IF CHOICE=47 THEN NU=5: NO(1)=8:  NO(2)=11: NO(3)=15: NO(4)=19: NO(5)=20:   GOTO Inmuf
  154. IF CHOICE=48 THEN NU=8: NO(1)=2:  NO(2)=7:  NO(3)=12: NO(4)=29: NO(5)=30:   NO(6)=31: NO(7)=32: NO(8)=33: GOTO Inmuf
  155.  
  156. 1880 
  157.  
  158. FOR IJ=1 TO 11
  159. CLS: FOR I=1 TO 20: IF I <10 THEN PRINT S$;
  160. PRINT I; ". "; CI$(I); C$; NT$(I);: PRINT TAB(40); I+20; ". "; CI$(I+20); C$; NT$(I+20): NEXT I
  161. IF IJ >1 THEN PRINT " TRANSMITTERS SELECTED";: FOR J=1 TO IJ-1: PRINT NO(J); S$;: NEXT J: PRINT S$
  162. PRINT " ENTER NUMBER OF TRANSMITTER"; IJ: INPUT; " (1 TO 40). ENTER 'F' IF FINISHED."; NO$
  163. NO(IJ)=INT(VAL(NO$))
  164. IF IJ=11 THEN NO$="F"
  165. IF NO$="F" OR NO$="f" THEN NU=IJ-1: GOTO Inmuf
  166. NU=IJ
  167. NEXT IJ
  168.  
  169.   
  170.   Inmuf:
  171.   
  172. CLS
  173.  
  174. PRINT
  175. PRINT
  176. PRINT
  177. PRINT TAB(30); "RECEIVER LOCATION"
  178. PRINT
  179. PRINT
  180. PRINT TAB(25); "1. "; CI$(41); ". "; NT$(41)
  181. PRINT
  182. PRINT TAB(25); "2. USER SUPPLIED LOCATION (LAT & LON)"
  183. PRINT
  184. PRINT
  185. PRINT TAB(25);:INPUT; "TYPE YOUR CHOICE (1 OR 2)         ", CHOICE$: IF CHOICE$="" THEN CHOICE$="1"
  186.  
  187. CHOICE =INT(VAL(CHOICE$)): IF CHOICE=1 THEN RCOM$=CI$(41)+C$+S$+NT$(41)+S$+S$+LO$(41)+S$
  188. IF CHOICE=1 THEN L2=LT(41): W2=LN(41): GOTO 2100
  189.  
  190. REM HERE USER INPUTS RECEIVER DATA
  191.  
  192. CLS
  193.  
  194. PRINT
  195. PRINT
  196. PRINT
  197.  
  198. 2040 
  199.  
  200. PRINT TAB(12);:INPUT; "LATITUDE OF RECEIVER - SOUTH IS NEGATIVE (-90 TO 90)   ",L2
  201. IF L2 <-90 OR L2 >90 THEN PRINT TAB(27); "TRY AGAIN": GOTO 2040
  202.  
  203. 2060 
  204.  
  205. PRINT
  206. PRINT TAB(12);:INPUT; "LONGITUDE OF RECEIVER - EAST IS NEGATIVE (-360 TO 360) ",W2
  207. IF W2 <-360 OR W2 >360 THEN PRINT TAB(12); "TRY AGAIN": GOTO 2060
  208. PRINT
  209. PRINT
  210. PRINT TAB(21); "TYPE YOUR COMMENTS ON THIS RECEIVER BELOW"
  211. PRINT
  212. PRINT TAB(30);: INPUT;"", RCOM$
  213.  
  214. 2100 
  215.   
  216. PRINT: PRINT
  217. PRINT TAB(25);: INPUT "MONTH (1 TO 12)                   ",M0: M0=INT(M0)
  218. IF M0 >=1 AND M0 <=12 THEN 2140
  219. PRINT TAB(25); "INVALID MONTH, MUST BE IN RANGE (1,12)": GOTO 2100
  220.  
  221. 2140 
  222.   
  223. PRINT: PRINT TAB(25); "DAY OF MONTH (1 TO";M(M0);: INPUT")           ", D6: D6=INT(D6)
  224. IF D6 >=1 AND D6 <=M(M0) THEN 2180
  225. PRINT TAB(25); "INVALID DAY. MUST BE IN RANGE (1,";M(M0);").": GOTO 2100
  226.  
  227. 2180 
  228.   
  229. PRINT: PRINT TAB(25);: INPUT "SOLAR FLUX ( >64 TO <444 )        ",FLUX
  230. IF FLUX <64 OR FLUX >444 THEN PRINT TAB(25); "FLUX OUT RANGE TRY AGAIN": GOTO 2180
  231.  
  232. REM     HERE THE SUNSPOT TABLE IS EVALUATED
  233. FOR I=2 TO 22
  234. IF SF(I) >=FLUX THEN FINAL=I: GOTO 2250
  235. NEXT I
  236.  
  237. 2250 
  238.     
  239. REM     LINEAR INTERPOLATION IS NOW USED TO FIND SUNSPOT NUMBER
  240. REM     FROM SOLAR FLUX. THIS PROGRAM IS MOST ACCURATE FOR
  241. REM     SOLAR FLUX OF 64 TO 244. IN THE RANGE OF 244 TO 444 AN
  242. REM     UNCERTAIN EXTRAPOLATION IS USED.
  243.  
  244. FA=(SF(FINAL)-FLUX)/(SF(FINAL)-SF(FINAL-1))
  245. S9=SN(FINAL)-FA*(SN(FINAL)-SN(FINAL-1))
  246. S9=INT(S9+0.5)
  247.  
  248. PRINT: PRINT: PRINT TAB(20);: INPUT "DO YOU DESIRE PRINTED OUTPUT (Y OR N)  ", PRINTOUT$
  249. IF PRINTOUT$="N" OR PRINTOUT$="n" THEN 2700
  250.  
  251. LPRINT: LPRINT "DATE: ";M$(M0);" "; D6
  252. IF ALLIT=1 THEN 2430
  253. LZ=(INT(L1*100+0.5))/100 
  254. WZ=(INT(W1*100+0.5))/100
  255. LPRINT "TRANSMITTER LOCATION: LATITUDE "; LZ; "LONGITUDE"; WZ
  256. LPRINT TCOM$
  257.  
  258. 2430 
  259.  
  260. LPRINT
  261. LZ=(INT(L2*100+0.5))/100
  262. WZ=(INT(W2*100+0.5))/100
  263. LPRINT "RECEIVER LOCATION: LATITUDE "; LZ; "LONGITUDE "; WZ
  264. LPRINT RCOM$
  265. LPRINT "SOLAR FLUX = "; FLUX
  266. LPRINT "SUNSPOT NUMBER ="; S9
  267. LPRINT
  268. IF ALLIT=1 THEN 2660
  269. LPRINT "   HOUR     MUF(MHZ)"                            
  270. LPRINT
  271. L1=L1*R0: W1=W1*R0: L2=L2*R0: W2=W2*R0
  272.  
  273.       FOR T5=0 TO 23
  274.  
  275.  
  276.   
  277.       GOSUB Mainmuf
  278.       
  279. LZ=(INT(T5*10))/10
  280. WZ=(INT((J9+0.05)*10))/10
  281.  
  282. LPRINT; SPC(6-LEN(STR$(INT(LZ))));LZ; SPC(10-LEN(STR$(INT(WZ)))-LEN(STR$(LZ-INT(LZ)))); WZ
  283.       
  284.       NEXT T5
  285.       
  286. LPRINT CHR$(12);: REM THIS IS EPSON JX-80 SPEAK FOR TOP-OF-FORM      
  287.       
  288. 2610 
  289.       
  290. CLS
  291. LOCATE 10,25: PRINT "WOULD YOU LIKE TO RUN ANOTHER"
  292. LOCATE 12,31: PRINT "MINIMUF 3.5 TRIAL"
  293. LOCATE 16,29: INPUT "PLEASE TYPE ( Y OR N ) ",YE$
  294. IF YE$="Y" OR YE$="" OR YE$="y" OR YE$="YES" OR YE$="yes" THEN GOTO Transgrpselect
  295.                                   
  296.       END
  297.       
  298.      2660 
  299.       
  300.       
  301. REM   HERE A LARGE NUMBER OF TRANSMITTER OUTPUTS ARE PRINTED
  302.  
  303. LPRINT: LPRINT: LPRINT TAB(32) "TRANSMITTER DATA": LPRINT: LPRINT
  304.  
  305.     FOR I=1 TO NU
  306.     
  307. TCOM$=CI$(NO(I))+C$+S$+NT$(NO(I))+S$+S$+LO$(NO(I))+S$
  308. IF I=10 THEN 2680
  309.  
  310. 2670 
  311.  
  312. LPRINT "NO."; S$; I; S$; TCOM$; "LAT= "; LT(NO(I)); " LON= "; LN(NO(I)): GOTO 2690
  313.  
  314. 2680 
  315.  
  316. LPRINT "NO."; I; S$; TCOM$; " LAT= "; LT(NO(I)); " LON= "; LN(NO(I))
  317.  
  318. 2690 
  319.  
  320.     NEXT I
  321.  
  322. LPRINT: LPRINT: LPRINT TAB(15) "MUF (MHZ) FOR EACH TRANSMITTER AT EACH UTC HOUR": LPRINT:LPRINT
  323. LPRINT "HOUR"; SPC(2);
  324. L2=L2*R0: W2=W2*R0
  325.     
  326.     FOR I=1 TO NU
  327.     
  328. LPRINT "NO.";I;: NEXT I
  329. LPRINT S$:LPRINT
  330. SPA=5: REM SPACING FOR OUTPUT LINE
  331.  
  332.     FOR T5=0 TO 23
  333.     
  334. LPRINT; SPC(3-LEN(STR$(INT(T5)))); T5;
  335. LH=1
  336.     
  337.     FOR I=1 TO NU
  338.     
  339. L1=LT(NO(I))*R0: W1=LN(NO(I))*R0
  340.  
  341.     GOSUB Mainmuf
  342.     
  343. WZ=(INT((J9+0.05)*10))/10                            
  344. LPRINT; SPC(SPA-LH-LEN(STR$(INT(WZ)))); WZ;
  345. LH=LEN(STR$(WZ))-LEN(STR$(INT(WZ)))       
  346. IF LH >2 THEN LH=0
  347.     
  348.     NEXT I
  349.     
  350. LPRINT S$                 
  351.  
  352.     NEXT T5
  353.  
  354. LPRINT CHR$(12);:REM THIS IS EPSON JX-80 SPEAK FOR "TOP-OF-FORM"
  355.     
  356.     GOTO 2610 :   REM THIS IS THE END OF PRINTER ROUTINE
  357.                   REM NEXT PRINTS TO THE SCREEN ONLY
  358.     
  359.     
  360.     
  361.    2700 
  362.  
  363. CLS
  364.  
  365. PRINT: PRINT "DATE: ";M$(M0);" "; D6
  366. IF ALLIT=1 THEN 2710
  367. LZ=(INT(L1*100+0.5))/100 
  368. WZ=(INT(W1*100+0.5))/100
  369. PRINT "TRANSMITTER LOCATION: LATITUDE "; LZ; "LONGITUDE"; WZ
  370. PRINT TCOM$
  371.  
  372. 2710 
  373.  
  374. PRINT
  375. LZ=(INT(L2*100+0.5))/100
  376. WZ=(INT(W2*100+0.5))/100
  377. PRINT "RECEIVER LOCATION: LATITUDE "; LZ; "LONGITUDE "; WZ
  378. PRINT RCOM$
  379. PRINT "SOLAR FLUX = "; FLUX
  380. PRINT "SUNSPOT NUMBER ="; S9
  381. PRINT
  382. IF ALLIT=1 THEN 2730
  383. PRINT "   HOUR     MUF(MHZ)"
  384. PRINT
  385. L1=L1*R0: W1=W1*R0: L2=L2*R0: W2=W2*R0
  386.  
  387.       FOR T5=0 TO 23
  388.  
  389.  
  390.   
  391.       GOSUB Mainmuf
  392.       
  393. LZ=(INT(T5*10))/10
  394. WZ=(INT((J9+0.05)*10))/10
  395.  
  396. PRINT; SPC(6-LEN(STR$(INT(LZ))));LZ; SPC(10-LEN(STR$(INT(WZ)))-LEN(STR$(LZ-INT(LZ)))); WZ
  397.       
  398.       NEXT T5
  399.  
  400. 2720 
  401.  
  402. CLS
  403. LOCATE 10,25: PRINT "WOULD YOU LIKE TO RUN ANOTHER"
  404. LOCATE 12,31: PRINT "MINIMUF 3.5 TRIAL"
  405. LOCATE 16,29: INPUT; "PLEASE TYPE ( Y OR N ) ",YE$ 
  406. IF YE$="Y" OR YE$="" OR YE$="y" OR YE$="YES" OR YE$="yes" THEN GOTO Transgrpselect
  407.  
  408.       END
  409.       
  410.      2730 
  411.       
  412.       
  413. REM   HERE A LARGE NUMBER OF TRANSMITTER OUTPUTS ARE PRINTED TO SCREEN
  414.  
  415. PRINT: PRINT: PRINT TAB(32) "TRANSMITTER DATA": PRINT: PRINT
  416.  
  417.     FOR I=1 TO NU
  418.     
  419. TCOM$=CI$(NO(I))+C$+S$+NT$(NO(I))+S$+S$+LO$(NO(I))+S$
  420. IF I=10 THEN 2750
  421.  
  422. 2740 
  423.  
  424. PRINT "NO."; S$; I; S$; TCOM$; "LAT= "; LT(NO(I)); " LON= "; LN(NO(I)): GOTO 2760
  425.  
  426. 2750 
  427.  
  428. PRINT "NO."; I; S$; TCOM$; " LAT= "; LT(NO(I)); " LON= "; LN(NO(I))
  429.  
  430. 2760 
  431.  
  432.     NEXT I
  433.  
  434. PRINT: PRINT: PRINT TAB(15) "MUF (MHZ) FOR EACH TRANSMITTER AT EACH UTC HOUR": PRINT:PRINT
  435. PRINT "HOUR"; SPC(2);
  436. L2=L2*R0: W2=W2*R0
  437.     
  438.     FOR I=1 TO NU
  439.     
  440. PRINT "NO.";I;: NEXT I
  441. PRINT S$: PRINT
  442. SPA=5: REM SPACING FOR OUTPUT LINE
  443.  
  444.     FOR T5=0 TO 23
  445.     
  446. PRINT; SPC(3-LEN(STR$(INT(T5)))); T5;
  447. LH=1
  448.     
  449.     FOR I=1 TO NU
  450.     
  451. L1=LT(NO(I))*R0: W1=LN(NO(I))*R0
  452.  
  453.     GOSUB Mainmuf
  454.     
  455. WZ=(INT((J9+0.05)*10))/10                            
  456. PRINT; SPC(SPA-LH-LEN(STR$(INT(WZ)))); WZ;
  457. LH=LEN(STR$(WZ))-LEN(STR$(INT(WZ)))       
  458. IF LH >2 THEN LH=0
  459.     
  460.     NEXT I
  461.     
  462. PRINT S$
  463.  
  464.     NEXT T5
  465.     
  466.     GOTO 2610
  467.     
  468. REM               MINIMUF 3.5 BEGINS HERE FOLKS
  469.  
  470.     Mainmuf:
  471.     
  472.     
  473.  3000 K7 = SIN (L1) * SIN (L2) + COS (L1) * COS (L2) * COS (W2-W1) 
  474.  3010 IF K7 >-1 THEN 3030
  475.  3020 K7=-1: G1=0: GOTO 3060
  476.  3030 IF K7 <1 THEN 3050
  477.  3040 K7=1: G1=0: GOTO 3060
  478.  3050 G1=FNACS(K7)
  479.  3060 K6=1.59*G1
  480.  3070 IF K6 >=1 THEN 3090
  481.  3080 K6=1
  482.  3090 K5=1/K6
  483.  3100 J9=100
  484.  
  485.    3110 FOR K1=1/(2*K6) TO 1-1/(2*K6) STEP 0.9999-1/K6
  486.  
  487.  3120 IF K5=1 THEN 3140
  488.  3130 K5=0.5
  489.  3140 P=SIN(L2)
  490.  3150 Q=COS(L2)
  491.  3160 A=(SIN(L1)-P*COS(G1))/(Q*SIN(G1))
  492.  3170 B=G1*K1
  493.  3180 C=P*COS(B)+Q*SIN(B)*A
  494.  3190 D=(COS(B)-C*P)/(Q*SQR(1-C^2))
  495.  3200 IF D >-1 THEN 3220
  496.  3210 D=0: GOTO 3250                                               
  497.  3220 IF D <1 THEN 3240
  498.  3230 D=0: GOTO 3250
  499.  3240 D=FNACS(D)
  500.  3250 W0=W2+SGN(SIN(W1-W2))*D
  501.  3260 IF W0 >=0 THEN 3280
  502.  3270 W0=W0+P1
  503.  3280 IF W0 <P1 THEN 3300
  504.  3290 W0=W0-P1
  505.  3300 IF C >-1 THEN 3320
  506.  3310 C=-1: L0=P0: GOTO 3350
  507.  3320 IF C <1 THEN 3340
  508.  3330 C=1: L0=P0: GOTO 3350
  509.  3340 L0=P0-FNACS(C)
  510.  3350 Y1=0.0172*(10+(M0-1)*30.4+D6)
  511.  3360 Y2=0.409*COS(Y1)
  512.  3370 K8=3.82*W0+12+0.13*(SIN(Y1)+1.2*SIN(2*Y1))
  513.  3380 K8=K8-12*(1+SGN(K8-24))*SGN(ABS(K8-24))
  514.  3390 IF COS (L0+Y2) >-0.26 THEN 3480
  515.  3400 K9=0
  516.  3410 G0=0
  517.  3420 M9=2.5*G1*K5
  518.  3430 IF M9 <=P0 THEN 3450
  519.  3440 M9=P0
  520.  3450 M9=SIN(M9)
  521.  3460 M9=1+2.5*M9*SQR(M9)
  522.  3470 GOTO 3730
  523.  3480 K9=(-0.26+SIN(Y2)*SIN(L0))/(COS(Y2)*COS(L0)+0.001)
  524.  3490 K9=12-ATN(K9/SQR(ABS(1-K9*K9)))*7.63944
  525.  3500 T=K8-K9/2+12*(1-SGN(K8-K9/2))*SGN(ABS(K8-K9/2))
  526.  3510 T4=K8+K9/2-12*(1+SGN(K8+K9/2-24))*SGN(ABS(K8+K9/2-24))
  527.  3520 C0=ABS(COS(L0+Y2))
  528.  3530 T9=9.7*C0^9.6
  529.  3540 IF T9 >0.1 THEN 3560
  530.  3550 T9=0.1
  531.  3560 M9=2.5*G1*K5
  532.  3570 IF M9 <=P0 THEN 3590
  533.  3580 M9=P0
  534.  3590 M9=SIN(M9)
  535.  3600 M9=1+2.5*M9*SQR(M9)
  536.  3610 IF T4 <T THEN 3640
  537.  3620 IF (T5-T)*(T4-T5) >0 THEN 3650
  538.  3630 GOTO 3780
  539.  3640 IF (T5-T4)*(T-T5) >0 THEN 3780
  540.  3650 T6=T5+12*(1+SGN(T-T5))*SGN(ABS(T-T5))
  541.  3660 G9=PI*(T6-T)/K9
  542.  3670 G8=PI*T9/K9
  543.  3680 U=(T-T6)/T9
  544.  3690 G0=C0*(SIN(G9)+G8*(EXP(U)-COS(G9)))/(1+G8*G8)
  545.  3700 G7=C0*(G8*(EXP(-K9/T9)+1))*EXP((K9-24)/2)/(1+G8*G8)
  546.  3710 IF G0 >=G7 THEN 3730
  547.  3720 G0=G7
  548.  3730 G2=(1+S9/250)*M9*SQR(6+58*SQR(G0))
  549.  3740 G2=G2*(1-0.1*EXP((K9-24)/3))
  550.  3750 G2=G2*(1+(1-SGN(L1)*SGN(L2))*0.1)
  551.  3760 G2=G2*(1-0.1*(1+SGN(ABS(SIN(L0))-COS(L0))))
  552.  3770 GOTO 3840
  553.  3780 T6=T5+12*(1+SGN(T4-T5))*SGN(ABS(T4-T5))
  554.  3790 G8=PI*T9/K9
  555.  3800 U=(T4-T6)/2
  556.  3810 U1=-K9/T9
  557.  3820 G0=C0*(G8*(EXP(U1)+1))*EXP(U)/(1+G8*G8)
  558.  3830 GOTO 3730
  559.  3840 IF G2 >J9 THEN 3860
  560.  3850 J9=G2
  561.  
  562.      3860 NEXT K1
  563.  
  564.          3870 RETURN
  565.  
  566.       
  567.       INSTRUCTIONS:
  568.  
  569.  
  570. CLS
  571. PRINT
  572. PRINT TAB(27); "MINIMUF 3.5 WITH DRIVER"
  573. PRINT
  574. PRINT TAB(26); "BY JAMES F. SULLIVAN KB8DE"
  575. PRINT TAB(20); "COPYRIGHT (C) 1982 BY JAMES F. SULLIVAN"
  576. PRINT
  577. PRINT TAB(22); "RECODED TO RUN ON YOUR AMIGA 1000"
  578. PRINT TAB(27); "AND THE DRIVER EXPANDED"
  579. PRINT
  580. PRINT TAB(29); "BY RONALD F. JACOBS"
  581. PRINT TAB(36); "WA1FSV"
  582. PRINT
  583. PRINT TAB(9);  "MINIMUF 3.5 HAS BEEN ADAPTED FROM THE PROGRAM APPEARING IN"
  584. PRINT TAB(9);  "'MINIMUF: A SIMPLIFIED MUF PREDICTION PROGRAM FOR MICRO-"
  585. PRINT TAB(9);  "COMPUTERS',BY R.B.ROSE;QST MAGAZINE; DEC,1982;PP.36-38."
  586. PRINT
  587. PRINT TAB(9);  "MINIMUF 3.5 IS PRESENTED HERE WITH THE PERMISSIONS OF THE"
  588. PRINT TAB(9);  "AMERICAN RADIO RELAY LEAGUE AND ROBERT B. ROSE."
  589. PRINT
  590. PRINT TAB(9);  "THIS PROGRAM MAY BE COPIED FOR NON-PROFIT DISTRIBUTION PROVIDED"
  591. PRINT TAB(9);  "ALL CREDITS AND COPYRIGHT INFORMATION IS RETAINED IN THE COPY."
  592. PRINT
  593. PRINT TAB(26); "PRESS <RETURN> TO CONTINUE";:INPUT "", Z$
  594.  
  595.       CLS
  596.  
  597. PRINT
  598. PRINT
  599. PRINT
  600. PRINT
  601. PRINT
  602. PRINT TAB(9);  "MINIMUF PREDICTS THE MAXIMUM USEABLE FREQUENCY FOR RADIO"
  603. PRINT TAB(9);  "PROPOGATION BETWEEN TWO LOCATIONS ON THE EARTH AT ALL HOURS"
  604. PRINT TAB(9);  "OF THE DAY WHEN THE DATE AND 10.7cm SOLAR FLUX IS INPUT."
  605. PRINT 
  606. PRINT
  607. PRINT
  608. PRINT
  609. PRINT
  610. PRINT TAB(9);  "MINIMUF HAS BEEN USED BETWEEN 2 AND 50 MHZ. IT IS MOST"
  611. PRINT TAB(9);  "USEFULL FOR PATH LENGHTS FROM 250 TO 6000 MILES."
  612. PRINT
  613. PRINT
  614. PRINT
  615. PRINT
  616. PRINT
  617. PRINT TAB(26); "PRESS <RETURN> TO CONTINUE.";:INPUT "",Z$
  618.  
  619.       CLS
  620.  
  621. PRINT
  622. PRINT
  623. PRINT TAB(9);  "THE DEFAULT RECEIVER LOCATION IS IN THE LAST 'TRANSMITTER'"
  624. PRINT TAB(9);  "DATA STATEMENT. TO CHANGE THIS, 5 ITEMS MUST BE GIVEN:"
  625. PRINT TAB(9);  "CITY,  STATE,  LOCATION,  LATITUDE, AND LONGITUDE."
  626. PRINT
  627. PRINT
  628. PRINT TAB(9);  "IF THE RECEIVER IS USED IN THE EASTERN UNITED STATES IT IS"
  629. PRINT TAB(9);  "SUGGESTED THAT THE LINE FOR 'ST.AUGUSTINE' BE EXCHANGED"
  630. PRINT TAB(9);  "WITH THE DATA IN THE REMARKS AFTER THE DEFAULT RECEIVER."
  631. PRINT
  632. PRINT
  633. PRINT TAB(9);  "AN 80 COLUMN PRINTER IS DESIREABLE FOR OUTPUT OF MORE THAN ONE"
  634. PRINT TAB(9);  "TRANSMITTER LOCATION AT A TIME AND FOR 80 COLUMN LISTINGS."
  635. PRINT
  636. PRINT
  637. PRINT TAB(9);  "10.7cm SOLAR FLUX INFORMATION (REQUIRED BY THIS PROGRAM)"
  638. PRINT TAB(9);  "MAY BE OBTAINED AT 18 MINUTES AFTER EACH HOUR ON STATIONS"
  639. PRINT TAB(9);  "WWV OR WWVH AT 2.5, 5, 10, 15, OR 20 MEGAHERTZ."
  640. PRINT
  641. PRINT
  642. PRINT TAB(26); "PRESS <RETURN> TO CONTINUE";: INPUT "",Z$
  643.  
  644.       CLS
  645.  
  646.       GOTO Driver
  647.       
  648.  
  649. REM ****************************
  650. REM * Driver for MINIMUF 3.5   *
  651. REM *  by JAMES F. SULLIVAN    *
  652. REM *         KB8DE            *
  653. REM *   COPYRIGHT (C) 1982     *
  654. REM *  by JAMES F. SULLIVAN    *
  655. REM *  THIS PROGRAM MAY BE     *
  656. REM *  COPIED FOR NON-PROFIT   *
  657. REM *      DISTRIBUTION        *
  658. REM *                          *
  659. REM * THE ACTUAL MINIMUF 3.5   *
  660. REM * PROGRAM IS IN LINES 3000 *
  661. REM * THROUGH 3870. THE INPUT  *
  662. REM * FOR MINIMUF 3.5 BEGINS   *
  663. REM * AT "DRIVER". HOW TO USE  *
  664. REM * MINIMUF 3.5 AND "DRIVER" *
  665. REM * BEGIN AT "INSTRUCTIONS"  *
  666. REM *                          *
  667. REM * THE ORIGINAL MINIMUF 3.5 *
  668. REM * AND DRIVER WERE ALTERED  *
  669. REM * FOR USE ON THE APPLE II+ *
  670. REM * by JAMES F. SULLIVAN.    *
  671. REM *                          *
  672. REM * THE MINIMUF 3.5 PROGRAM  *
  673. REM * APPEARED IN THE ARTICLE  *
  674. REM * "MINIMUF: A SIMPLIFIED   *
  675. REM * MUF-PREDICTION PROGRAM   *
  676. REM * FOR MICROCOMPUTERS" by   *
  677. REM * ROBERT B. ROSE K6GKU, IN *
  678. REM * QST MAGAZINE; DEC, 1982; *
  679. REM * PP. 36-38; AND IS COPY-  *
  680. REM * RIGHTED BY THE AMERICAN  *
  681. REM * RADIO RELAY LEAGUE.IT IS *
  682. REM * PRESENTED HERE, FOR NON- *
  683. REM * PROFIT DISTRIBUTION ONLY *
  684. REM * WITH THE PERMISSIONS OF  *
  685. REM * THE AMERICAN RADIO RELAY *
  686. REM * LEAGUE AND R. B. ROSE.   *
  687. REM *                          *
  688. REM *                          *
  689. REM * ALL OF THE ABOVE CREDITS *
  690. REM * MUST BE REPRODUCED WITH  *
  691. REM * ANY COPY, WRITTEN OR     *
  692. REM * ELECTRONIC, FOR PER-     *
  693. REM * MISSIONS TO COPY FOR NON-*
  694. REM * PROFIT USE TO BE VALID.  *
  695. REM ****************************
  696. REM
  697. REM
  698. REM ****************************
  699. REM * THE PROGRAM "DRIVER" WAS *
  700. REM * RECODED AND ENHANCED TO  *
  701. REM * TO RUN ON THE COMMODORE  *
  702. REM * AMIGA 1000 COMPUTER      *
  703. REM * USING "AmigaBasic" BY:   *
  704. REM *    RONALD F. JACOBS      *
  705. REM *        WA1FSV            *
  706. REM * INTERESTED USERS OF THE  *
  707. REM * PROGRAM "MINIMUF 3.5"    *
  708. REM * MAY OBTAIN THEIR FREE    *
  709. REM * COPY BY CONTACTING WA1FSV*
  710. REM * OR THE AMERICAN RADIO    *
  711. REM * RELAY LEAGUE.            *
  712. REM ****************************
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.